package org.suze.demo.route;

/**
 * 当前线程使用数据源处理器
 */
public class DynamicDataSourceHandler {

    /**
     * 当前线程的数据源配置
     */
    private static final ThreadLocal<DataSourceEnum> DATA_SOURCE_TYPES = new ThreadLocal<>();

    /**
     * 默认数据源
     */
    private static final DataSourceEnum DEFAULT_DATA_SOURCE = DataSourceEnum.DEFAULT;

    /**
     * 获取当前线程的数据源
     * @return
     */
    public static DataSourceEnum get() {
        // 如果设置了取设置的数据源，没有取默认数据源
        return DATA_SOURCE_TYPES.get() == null ? DEFAULT_DATA_SOURCE : DATA_SOURCE_TYPES.get();
    }

    /**
     * 设置数据源
     * @param dataSourceType
     */
    public static void set(DataSourceEnum dataSourceType) {
        DATA_SOURCE_TYPES.set(dataSourceType);
    }

    /**
     * 重置数据源为默认数据源
     */
    public static void reset() {
        DATA_SOURCE_TYPES.set(DEFAULT_DATA_SOURCE);
    }

}
